import axios from "axios";
import { Dialog } from "vant";
import { getToken, removeToken, removeUserID } from "./localData";
import router from "../router/index";


//基础路径
axios.defaults.baseURL = 'http://127.0.0.1:3000'
//网络地址
// axios.defaults.baseURL = 'http://157.122.54.189:9083'

// 添加请求拦截器
axios.interceptors.request.use(
    (config) => {
        // 在发送请求之前做些什么
        // console.log(config);//config是请求前的配置
        // 获取本地token
        const token = getToken()
        if (token) {
            config.headers.Authorization = token
        }
        return config;
    },
    (error) => {
        // 对请求错误做些什么
        return Promise.reject(error);
    });

// 添加响应拦截器
axios.interceptors.response.use((response) => {
    // console.log('服务器响应时会自动执行', response);
    if (response.data.message === "用户信息验证失败") {
        // 失败的原因可能是未登录，或者登录过期了。
        // 1. 删除已过期的用户信息
        removeToken()
        removeUserID()
        // 2. 登录弹出框
        Dialog.confirm({
            title: '未登录',
            message: '请登录',
            confirmButtonText: '去登录',
            cancelButtonText: '残忍拒绝'
        }).then(() => {
            // 把跳转前的页面地址存储起来
            // console.log(location);
            const from = location.href
            console.log('去登录前的页面', { from })
            //不在vue组件内如何使用路由
            //1.引入路由
            //2.router.push()
            router.push({
                /* path: `/login`,
                query: { from: from } */
                // 1.query 会显示在地址栏上，会转义成百分比编码，有问题
                // 2.path 和 params一起用会有冲突的
                name: 'Login',
                params: { from }
            })
        })
            .catch(() => {
                // on cancel
            });
    }
    // 对响应数据做点什么
    return response;
},
    (error) => {
        // 对响应错误做点什么
        return Promise.reject(error);
    });
export default axios